diff --git a/system/libraries/Config.php b/system/libraries/Config.php
index aa26c92..c4ea9b4 100644
--- a/system/libraries/Config.php
+++ b/system/libraries/Config.php
@@ -75,7 +75,7 @@
 			show_error('The configuration file '.$file.EXT.' does not exist.');
 		}
 	
-		include_once(APPPATH.'config/'.$file.EXT);
+		include(APPPATH.'config/'.$file.EXT);
 
 		if ( ! isset($config) OR ! is_array($config))
 		{
diff --git a/system/libraries/Exceptions.php b/system/libraries/Exceptions.php
index 6d58ee6..8f90ff8 100644
--- a/system/libraries/Exceptions.php
+++ b/system/libraries/Exceptions.php
@@ -120,7 +120,7 @@
 			ob_end_flush();	
 		}
 		ob_start();
-		include_once(APPPATH.'errors/'.$template.EXT);
+		include(APPPATH.'errors/'.$template.EXT);
 		$buffer = ob_get_contents();
 		ob_end_clean();
 		return $buffer;
@@ -156,7 +156,7 @@
 			ob_end_flush();	
 		}
 		ob_start();
-		include_once(APPPATH.'errors/error_php'.EXT);
+		include(APPPATH.'errors/error_php'.EXT);
 		$buffer = ob_get_contents();
 		ob_end_clean();
 		echo $buffer;
diff --git a/system/libraries/Language.php b/system/libraries/Language.php
index 37a5c7e..faf516e 100644
--- a/system/libraries/Language.php
+++ b/system/libraries/Language.php
@@ -66,16 +66,15 @@
 		}
 	
 		// Determine where the language file is and load it
-	
 		if (file_exists(APPPATH.'language/'.$idiom.'/'.$langfile))
 		{
-			include_once(APPPATH.'language/'.$idiom.'/'.$langfile);
+			include(APPPATH.'language/'.$idiom.'/'.$langfile);
 		}
 		else
 		{		
 			if (file_exists(BASEPATH.'language/'.$idiom.'/'.$langfile))
 			{
-				include_once(BASEPATH.'language/'.$idiom.'/'.$langfile);
+				include(BASEPATH.'language/'.$idiom.'/'.$langfile);
 			}
 			else
 			{
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index f243a28..709d9fe 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -315,13 +315,13 @@
 		
 			if (file_exists(APPPATH.'helpers/'.$helper.EXT))
 			{
-				include_once(APPPATH.'helpers/'.$helper.EXT);
+				include(APPPATH.'helpers/'.$helper.EXT);
 			}
 			else
 			{		
 				if (file_exists(BASEPATH.'helpers/'.$helper.EXT))
 				{
-					include_once(BASEPATH.'helpers/'.$helper.EXT);
+					include(BASEPATH.'helpers/'.$helper.EXT);
 				}
 				else
 				{
@@ -381,13 +381,13 @@
 		
 			if (file_exists(APPPATH.'plugins/'.$plugin.EXT))
 			{
-				include_once(APPPATH.'plugins/'.$plugin.EXT);	
+				include(APPPATH.'plugins/'.$plugin.EXT);	
 			}
 			else
 			{
 				if (file_exists(BASEPATH.'plugins/'.$plugin.EXT))
 				{
-					include_once(BASEPATH.'plugins/'.$plugin.EXT);	
+					include(BASEPATH.'plugins/'.$plugin.EXT);	
 				}
 				else
 				{
@@ -454,7 +454,7 @@
 				show_error('Unable to load the requested script: scripts/'.$script.EXT);
 			}
 			
-			include_once(APPPATH.'scripts/'.$script.EXT);
+			include(APPPATH.'scripts/'.$script.EXT);
 			
 			$this->_ci_scripts[$script] = TRUE;
 		}
@@ -675,8 +675,8 @@
 				show_error("Unable to load the requested class: ".$class);
 			}
 
-			include_once(BASEPATH.'libraries/'.ucfirst($class).EXT);
-			include_once(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);
+			include(BASEPATH.'libraries/'.ucfirst($class).EXT);
+			include(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);
 
 			return $this->_ci_init_class($class, config_item('subclass_prefix'), $params);			
 		}
@@ -687,7 +687,7 @@
 			$path = ($i % 2) ? APPPATH : BASEPATH;		
 			if (file_exists($path.'libraries/'.$class.EXT))
 			{
-				include_once($path.'libraries/'.$class.EXT);
+				include($path.'libraries/'.$class.EXT);
 				return $this->_ci_init_class($class, '', $params);
 			}
 		}
@@ -715,7 +715,7 @@
 			$config = NULL;
 			if (file_exists(APPPATH.'config/'.$class.EXT))
 			{
-				include_once(APPPATH.'config/'.$class.EXT);
+				include(APPPATH.'config/'.$class.EXT);
 			}
 		}
 		
@@ -758,7 +758,7 @@
 	 */
 	function _ci_autoloader()
 	{	
-		include_once(APPPATH.'config/autoload'.EXT);
+		include(APPPATH.'config/autoload'.EXT);
 		
 		if ( ! isset($autoload))
 		{
diff --git a/system/libraries/Router.php b/system/libraries/Router.php
index 886433f..6d925a1 100644
--- a/system/libraries/Router.php
+++ b/system/libraries/Router.php
@@ -81,7 +81,7 @@
 		}
 		
 		// Load the routes.php file.
-		@include_once(APPPATH.'config/routes'.EXT);
+		@include(APPPATH.'config/routes'.EXT);
 		$this->routes = ( ! isset($route) OR ! is_array($route)) ? array() : $route;
 		unset($route);
 
diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index 183e889..1b25a44 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -268,7 +268,7 @@
 	 * @access	public
 	 * @return	void
 	 */
-	function clear_data()
+	function clear()
 	{
 		$this->rows				= array();
 		$this->heading			= array();
